Many consumer electronics items such as televisions, set-top boxes, audio/video components, and media center PCs use some form of infrared (IR) signaling for remote control. The signaling is typically accomplished by modulating an infrared light-emitting diode (LED) on and off in a unique pattern such that an IR receiver on the controlled equipment can detect specific commands such as on and off, volume up/down, channel up/down, and the like. More specifically, the IR LED is modulated at a specified carrier frequency, typically in the range of 30 KHz to 60 KHz. This carrier frequency is then switched on and off according to an encoded sequence of binary digits that form the unique controller codes.
There are no widely accepted official industry standards governing how the IR LED is to be modulated or how the data is to be encoded. In practice, various types of encoding are used by the different manufacturers of the controlled equipment. FIGS. 1a-1c show three types of encoding currently used in some equipment. FIG. 1a illustrates pulse-width encoding in which a long period of carrier frequency may represent a binary “1,” and a short period may represent a “0.” For example, the bit time for a Logic 1 can be defined as 1.5 times the bit time for a Logic 0. Another type of encoding is bi-phase encoding, such as shown in FIG. 1b, in which one half of the bit time is modulated on and the other half is off. In bi-phase encoding, binary values are differentiated by which half of the bit time is “on,” that is, a binary “1” may be represented by “off” followed by “on,” and vice-versa for binary “0.” A third type of encoding, shown in FIG. 1c, is called pulse-position encoding, in which the time between pulses of a constant duration determines the logical value. For example, the bit time for a Logic 1 can be defined as twice that for a Logic 0. There are other less common encoding schemes that exist in the industry that, for reasons of brevity, are not detailed here.
Again, because there are no widely accepted standards, each manufacturer implements its own specific command sequence. For example, FIGS. 2a-2d show the Phillips RC5 IR Remote Control Protocol, which is a commonly used bi-phase encoding scheme and command structure. In the Phillips protocol, a carrier clock having a frequency of 36 KHz, as schematically depicted in FIG. 2a, is modulated using bi-phase data, such as the logic “0′” and logic “1” data signal shown in FIG. 2b. The result of the modulation is shown in FIG. 2c, which shows the data modulated clock signal representing a logic “0” bit and logic “1” bit. Such logical bit representations may be combined into a string of bi-phase data to create a command sequence that is provided to an infrared LED.
FIG. 2d depicts an exemplary fourteen-bit command sequence using the Phillips protocol. The command typically includes “Start” bits S1 and S2 (Bit 1-Bit 2) that mark its beginning, a “Toggle” bit T (Bit 3) for repeated commands, a sequence of five bits that represent the device address (Bit 4-Bit 8), followed by a sequence of bits that represent the command itself (Bit 9-Bit 14). Although not shown in FIG. 2d, a “Stop” bit may sometimes follow the command to indicate the end of the command sequence. The device address allows a single remote control to communicate with multiple devices, such as a TV, VCR, set-top box, audio components etc., and the command represents a specific function of the device, such as “play,” “channel up,” “volume down” etc. associated with the device.
The typical electronic hardware implementation of a remote control device is simply a small, embedded microcontroller that controls a single I/O pin that turns an IR LED on and off based on user inputs from a keypad. All of the encoding, modulation, and command sequencing is done in firmware loaded onto the microcontroller. This is an inexpensive, low power, and reasonably flexible solution for a dedicated-use remote control device.
One existing hardware solution by Texas Instruments (TI) is described in Section 2.4.4 of “TMS320DM646x DMSoC Universal Asynchronous Receiver/Transmitter (UART)” (http://focus.ti.com/lit/ug/spruer6/spruer6.pdf). This approach generates the carrier frequency using a clock divider, generates a bit clock using another clock divider, and loads a series of bits into a shift register to represent the “on” and “off” pulses based on a single period of the bit clock. Although this implementation would be reasonable for the bi-phase encoding shown in FIGS. 2a-2d, it is limited in its capability for handling other encodings, such as pulse-width and pulse-position encoding.
The typical hardware solutions for a dedicated-use IR remote controller are not practical for a highly integrated, multi-use, portable communications and computing device. Simply adding a dedicated microcontroller loaded with the modulation and encoding firmware would violate the space, power, and cost constraints of such a device. An alternative solution might be to load the modulation and encoding firmware onto the portable device's existing microprocessor and have it control an IR LED (which often already exists on these devices) through an I/O pin. However, controlling a single pin with this level of precision is not an efficient use of the device's processor. This is especially so in multi-use devices that must control a number of different things simultaneously (e.g., maintaining a communications link with a cellular base station along with a user application such as email or Internet browser), where a large portion of the processor's power would be consumed modulating a single pin.
While the existing TI approach provides more functionality in hardware and significantly off-loads the microprocessor, it remains limited in configuring the bit clock for encoding schemes that use varying pulse widths. For a scheme that requires varying pulse widths with a fine degree of granularity with respect to the bit period, or a scheme that does not have a constant bit period, the bit clock must be programmed to be a much higher rate, therefore multiplying the number of bits that must be loaded by the microprocessor into the shift register. This greatly increases the real-time constraints on the microprocessor, which, in turn, may affect performance of other applications that may be concurrently running.
Another potential solution would be to implement the entire IR signal generating functionality, including the data encoding, in logic gates. The logic design for such an implementation would be relatively straightforward because none of the schemes currently in use are very complex. However, because there is no single standard, all the existing protocols would have to be implemented individually. This would lead to inflexible and/or expensive IR signaling generator implementations. For example, in devices that typically use Application Specific Integrated Circuit (ASIC) technology, such as cellular phones and personal digital assistants (PDAs), the IR signaling generation function would become fixed once a design of the ASIC device is finalized. Also, because implementing multiple IR remote control standards would utilize a large number of ASIC gates, the cost of the ASIC would increase significantly.